home *** CD-ROM | disk | FTP | other *** search
Makefile | 1993-06-01 | 4.1 KB | 172 lines |
- ###*#######################################################################
- #
- # Makefile to test the installation of g++ and libg++
- # (by hgs@cygnus.com)
- #
- # Usage: make foo_main test-90S test-90D PREFIX=prefix [other macros]
-
- srcdir = .
-
-
- #
- # Compilation macros
- #
- PREFIX = $(prefix)
-
- CFLAGS =
- CXXFLAGS =
- CPP_FLAGS = #-I$(srcdir)/../g++-include
- OPTIMIZE_FLAGS = -O
- DEBUG_FLAGS = -g -v #-Wall
- COMPILE_FLAGS=$(NOSTDINC) -I.. -I$(srcdir) -I$(srcdir)/../src -I$(srcdir)/../$(IO_DIR) $(WRAP_C_INCLUDES) $(XTRAFLAGS)
-
-
- DEPEND_SOURCES = $(srcdir)/*.cc
-
-
- T90 = $(T90S) $(T90D)
- T90D = # dex_bar
-
- FLAGS_90 = \
- GXX="$(GXX)"\
- CPP_FLAGS="$(CPP_FLAGS)"\
- OPTIMIZE_FLAGS="$(OPTIMIZE_FLAGS)"\
- DEBUG_FLAGS="$(DEBUG_FLAGS)"\
- GXXLDFLAGS="$(GXXLDFLAGS)"
-
- #### package, host, target, and site dependent Makefile fragments come in here.
- ##
-
-
- TEMP_FILES = *.o foo_main a b *foo_main.out *foo_main.diff *foo_main.run
-
- help:
- @echo Usage: make foo_main test-40 test-90S test-90D PREFIX=prefix [other macros]
-
-
- test-90S: foo_main a b
-
- test-90S-then-clean: test-90S
- rm -f ${TEMP_FILES}
-
- test-90D: dfoo_main da db
-
- test-90D-then-clean: test-90D
- rm -f ${TEMP_FILES}
-
- test: $(TEST)
- for P in $(TEST) ; do if [ $$P != foo_main ]; then eval ./$$P; fi; done
-
- a : a.o
- $(CXX) -o a a.o $(LIBS)
- da : a.o
- $(CXX) -o da -dynamic a.o $(LIBS)
-
-
- b : bf.o bm.o
- $(CXX) -o b bm.o bf.o $(LIBS)
-
- db : bf.o bm.o
- $(CXX) -o db -dynamic bm.o bf.o $(LIBS)
-
-
- foo_main: foo_main.diff
- @true
-
- dfoo_main: dfoo_main.diff
- @true
-
- foo_main.run: foo_main.o foo_func.o Foo.o expected.out
- $(CXX) $(DEBUG_FLAGS) -o $@ foo_main.o foo_func.o Foo.o
-
- foo_main.out: foo_main.run
- ./foo_main.run > foo_main.out
-
- foo_main.diff: foo_main.out $(srcdir)/expected.out
- @echo "diff $(srcdir)/expected.out foo_main.out >foo_main.diff"
- @diff $(srcdir)/expected.out foo_main.out >foo_main.diff \
- || (echo "Static constructor test failed - see libg++/README"; false)
-
- dfoo_main.run: foo_main.o foo_func.o Foo.o
- $(CXX) $(DEBUG_FLAGS) -o $@ -dynamic foo_main.o foo_func.o Foo.o $(LIBS)
-
- dfoo_main.out: dfoo_main.run
- ./dfoo_main.run > dfoo_main.out
-
- dfoo_main.diff: dfoo_main.out $(srcdir)/expected.out
- diff $(srcdir)/expected.out dfoo_main.out
-
- ex_bar.o: ex_bar.cc
- $(CXX) -fhandle-exceptions ex_bar.cc
-
- ex_bar: ex_bar.o
- $(CXX) $(DEBUG_FLAGS) -o $@ ex_bar.o
-
- dex_bar: ex_bar.o
- $(CXX) $(DEBUG_FLAGS) -o $@ -dynamic ex_bar.o
-
- # --- Generate depend rules ---
-
- SRCDIR=$(srcdir)/..
-
- # The sed script below attempts to make the depend output portable by
- # making the output use the same macros used elsewhere in the Makefile:
- # - It replaces double // by a single /.
- # - It replaces include files that match part of the GXX_INCLUDE_DIRS
- # by names defined in terms of the macros used to define GXX_INCLUDE_DIRS.
- # - It removes any absolute include file names that remain.
- # - then remove lines, which contain only `\'
- #
- depend: depend.tmp
- if [ "x$(DEPEND_SOURCES)" != "x" ] ; then \
- sed < depend.tmp \
- -e 's|//|/|g' \
- -e 's|$(srcdir)|$$(srcdir)|g' \
- -e 's| /[^ ]*[.]h||g' \
- -e 's|: *\$$(srcdir)/\(.*\.[cC]*\)|: \1|' \
- -e '/^[ ]*\\$$/d' -e 's/^[ ]*$$//' \
- | awk 'BEGIN { prev = "" } \
- /^( )*$$/ { if (prev ~ /\\$$/) \
- { prev = substr(prev,1,length(prev)-1); next } \
- } \
- { print prev; prev = $$0 } \
- END { if (prev !~ /^( )*$$/) print prev }' \
- > $(srcdir)/depend ;\
- fi
-
- depend.tmp: $(DEPEND_SOURCES)
- if [ "x$(DEPEND_SOURCES)" = "x" ] ; then \
- echo "" > $(srcdir)/depend ;\
- else \
- echo "" >depend.tmp ; \
- $(SRCDIR)/utils/g++dep.sh -f depend.tmp $(GXX_INCLUDE_DIRS) \
- $(DEPEND_SOURCES) ;\
- fi
-
- do_depend: depend
- if [ "$(SUBDIRS)" != "" ] ; then \
- for D in $(SUBDIRS) x ; do \
- if [ -d $$D ] ; then \
- echo "cd $$D; $(MAKE) do_depend" ; \
- (cd $$D ; $(MAKE) do_depend ); \
- fi ; \
- done ;\
- fi
-
- # DO NOT DELETE THIS LINE -- g++dep uses it.
- # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-
- Foo.o : Foo.cc \
- $(srcdir)/Foo.h
- a.o : a.cc
- bf.o : bf.cc
- bm.o : bm.cc
- ex_bar.o : ex_bar.cc \
- $(srcdir)/ex_bar.cc
- foo_func.o : foo_func.cc \
- $(srcdir)/Foo.h
- foo_main.o : foo_main.cc \
- $(srcdir)/Foo.h
-
- # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
-